import store from '@/store/index';
/**
 * 响应拦截
 * @param {Object} http
 */
module.exports = (vm) => {
	uni.$u.http.interceptors.response.use((response) => {
		/* 对响应成功做点什么 可使用async await 做异步操作 */
		//	关闭 loading
		if (response.config.custom.loading) {
			uni.hideLoading();
		}
		const responseData = response.data;
		let hasError = false;
		// 没有 code 字段
		if (!responseData || !responseData.code) {
			// 设置为错误状态
			hasError = true;
		}
		// 登录过期
		if (responseData.code === 401) {
			// 清空用户数据
			store.dispatch('user/logout');
			// 重新登陆后要跳转到指定页面，使用 getCurrentPages() 获取当前页面参数
			// eslint-disable-next-line no-undef
			const pages = getCurrentPages();
			const curPage = pages[pages.length - 1].route;
			const curParams = pages[pages.length - 1].options;
			console.log(pages, curPage, curParams);
			const redirect = encodeURIComponent(curPage + '?' + uni.$u.queryParams(curParams));
			// 200ms 后提示，防止被跳转中断
			setTimeout(() => {
				uni.$u.toast('登录过期，请重新登录');
			}, 200);
			// 重定向到授权登录页面
			uni.reLaunch({ url: '/pages/login/index?redirect=' + redirect });
			return Promise.reject(response);
		}
		// 错误请求
		if (responseData.code !== 200) {
			// 设置为错误状态
			hasError = true;
		}
		if (hasError) {
			// 错误提示
			if (response.config.custom.toastError) {
				uni.$u.toast(responseData.msg || '请求失败，请稍后再试');
			}
			// fail 回调
			return Promise.reject(response);
		}
		// 根据配置返回不同的数据
		return response.config.showAllResponse ? response : responseData;
	}, (response) => {
		/*  对响应错误做点什么 （statusCode !== 200）*/
		// console.log('>>>>>>>>> response >>>>>> ' + JSON.stringify(response))
		if (response.config.custom.loading) {
        	uni.hideLoading();
		}
		if (response.config.custom.toastError) {
			const toastMessage = response.statusCode ? `网络错误${response.statusCode}` : '网络错误，请检查您的网络';
			uni.$u.toast(toastMessage);
		}
		// fail 回调
		return Promise.reject(response);
	});
};
